﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class vendas_ver : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        string Tipo_Permissao_Vendas = "" + this.Session["Tipo_Permissao_Vendas"];
        int iSellsPermission = 0;
        try { iSellsPermission = int.Parse(Tipo_Permissao_Vendas); }
        catch { }
        
        if (iSellsPermission <= 0)
        {
            this.Response.Redirect("login.aspx");
        }

        try
        {
        }
        catch { }

        if (this.Request["delete"] == "y")
        {
            string Id_Venda = this.Request["Id_Venda"];
            if (string.IsNullOrEmpty(Id_Venda) == false)
            {
                PL.DataBase.DAO dao = new PL.DataBase.DAO();
                dao.Setup(PL.DataBase.DatabaseTypes.MySql, PL.General.Instance.ConnectionString);
                dao.Connector.Open();

                // We can only delete users with type 3 and users from this intermediate
                string sql = "UPDATE tb_Vendas SET Excluido=1, RegistroExcluidoEm='" + PL.General.GetTodaysDate() + "', RegistroExcluidoPor=" + this.Session["UserData-ID"] + ", Id_Permissao_ExclusaoRegistro='" + this.Session["Tipo_Permissao_Vendas"] + "' WHERE Id_Venda=" + Id_Venda;
                dao.Connector.Execute(sql);
                dao.Connector.Close();

                this.Response.Redirect("vendas_ver.aspx");
            }
        }
    }

    protected void WriteSells()
    {
        string Tipo_Permissao_Vendas = "" + this.Session["Tipo_Permissao_Vendas"];
        int iSellsPermission = 0;
        try { iSellsPermission = int.Parse(Tipo_Permissao_Vendas); }
        catch { }

        try
        {
            // Date
            DateTime now = DateTime.Now;
            string startDate = this.Request["startDate"];
            string endDate = this.Request["endDate"];
            if (string.IsNullOrEmpty(startDate) == true)
            {
                startDate = 1 + "/" + now.Month + "/" + now.Year;
            }
            if (string.IsNullOrEmpty(endDate) == true)
            {
                int maxDay = DateTime.DaysInMonth(now.Year, now.Month);
                endDate = maxDay + "/" + now.Month + "/" + now.Year;
            }

            string startDate2 = "";
            string endDate2 = "";      
            DateTime previousDay = DateTime.Parse(startDate);
            DateTime nextDay = DateTime.Parse(endDate);

            //startDate2 = previousDay.Year + "-" + this.AdjustNumber("" + previousDay.Month) + "-" + this.AdjustNumber("" + previousDay.Day) + " 00:00:00";                              
            //endDate2 = nextDay.Year + "-" + this.AdjustNumber("" + nextDay.Month) + "-" + this.AdjustNumber("" + nextDay.Day) + " 23:99:99";
            startDate2 = previousDay.Year + "-" + this.AdjustNumber("" + previousDay.Month) + "-" + this.AdjustNumber("" + previousDay.Day) + "";                              
            endDate2 = nextDay.Year + "-" + this.AdjustNumber("" + nextDay.Month) + "-" + this.AdjustNumber("" + nextDay.Day) + "";

            PL.DataBase.DAO dao = new PL.DataBase.DAO();
            dao.Setup(PL.DataBase.DatabaseTypes.MySql, PL.General.Instance.ConnectionString);
            dao.Connector.Open();

            string ContratoRecebido = this.Request["ContratoRecebido"];
            string ContratoFoiCancelado = this.Request["ContratoFoiCancelado"];
            string Financeiro_ComissaoFoiPaga = this.Request["Financeiro_ComissaoFoiPaga"];
            string ComissaoFoiExtornadaPeloVendedor = this.Request["ComissaoFoiExtornadaPeloVendedor"];

            string sql = "SELECT tb_Produtos.NomeProduto,  tb_Vendas.* FROM tb_Vendas INNER JOIN tb_Produtos ON (tb_Vendas.Id_ProdutoVendido = tb_Produtos.Id_Produto)  ";
            sql += " WHERE ";
            sql += " tb_Vendas.Excluido=0 AND tb_Vendas.VersaoMaisAtualDoRegistro=1 ";
            sql += " AND tb_Vendas.Lancamento_DataVenda >= '" + startDate2 + "' AND tb_Vendas.Lancamento_DataVenda <= '" + endDate2 + "'";

            if (string.IsNullOrEmpty(ContratoRecebido) == false)
            {
                sql += " AND tb_Vendas.ContratoRecebido=" + ContratoRecebido;
            }
            if (string.IsNullOrEmpty(ContratoFoiCancelado) == false)
            {
                sql += " AND tb_Vendas.ContratoFoiCancelado=" + ContratoFoiCancelado;
            }
            if (string.IsNullOrEmpty(Financeiro_ComissaoFoiPaga) == false)
            {
                sql += " AND tb_Vendas.Financeiro_ComissaoFoiPaga=" + Financeiro_ComissaoFoiPaga;
            }
            if (string.IsNullOrEmpty(ComissaoFoiExtornadaPeloVendedor) == false)
            {
                sql += " AND tb_Vendas.ComissaoFoiExtornadaPeloVendedor=" + ComissaoFoiExtornadaPeloVendedor;
            }

            var reader = dao.Connector.QueryWithReader(sql);
            while (reader.Read() == true)
            {
                string edit = "<a href='vendas_criareditar.aspx?Id_Venda=" + reader["Id_Venda"] + "'>Editar</a>";
                string delete = "<a href='vendas_ver.aspx?delete=y&Id_Venda=" + reader["Id_Venda"] + "' onclick='return confirm(\"Tem certeza que deseja deletar este registro?\")'>Deletar</a>";
                string askContract = "<a href='vendas_cobrarcontrato.aspx?Id_Venda=" + reader["Id_Venda"] + "'>Cobrar envio de contrato</a>";
                string date = "";                
                try
                {
                    date = PL.General.GetLegibleDate2("" + reader["Lancamento_DataVenda"]);
                }
                catch { }

                double txValue = 0;
                try
                {
                    if (iSellsPermission == 3)
                    {
                        txValue = double.Parse("" + reader["Conferencia_ValorVenda"]);
                    }
                    else
                    {
                        txValue = double.Parse("" + reader["Lancamento_ValorVenda"]);
                    }
                }
                catch { }

                double mValue = 0;
                try
                {
                    if (iSellsPermission == 3)
                    {
                        mValue = double.Parse("" + reader["Conferencia_ValorMensalidade"]);
                    }
                    else
                    {
                        mValue = double.Parse("" + reader["Lancamento_ValorMensalidade"]);
                    }
                }
                catch { }

                string options = "";                
                if (iSellsPermission == 2 || iSellsPermission == 3 || iSellsPermission == 4 || iSellsPermission == 9)
                {
                    options += edit;
                }

                if (iSellsPermission == 3)
                {
                    options += "<br />" + askContract;
                }
                if (iSellsPermission == 9)
                {
                    options += " - " + delete; ;
                }

                string Lancamento_NumeroContrato = "" + reader["Lancamento_NumeroContrato"];
                try
                {
                    Lancamento_NumeroContrato = "" + double.Parse(Lancamento_NumeroContrato).ToString("#,##0");
                }
                catch { }

                string redStyle = "font-weight: bold; color: red !important;";
                string greenStyle = "font-weight: bold; color: green !important;";

                // Contrato - Chegou / Não Chegou
                ContratoRecebido = "" + reader["ContratoRecebido"];
                if (ContratoRecebido == "1")
                {
                    ContratoRecebido = "<span class=\"" + greenStyle + "\">Chegou</span>";
                }
                else
                {
                    ContratoRecebido = "<span class=\"" + redStyle + "\">Não Chegou</span>";
                }

                // Venda - Ativa / Cancelada
                ContratoFoiCancelado = "" + reader["ContratoFoiCancelado"];
                if (ContratoFoiCancelado == "1")
                {
                    ContratoFoiCancelado = "<span class=\"" + redStyle + "\">Cancelada</span>";
                }
                else
                {
                    ContratoFoiCancelado = "<span class=\"" + greenStyle + "\">Ativa</span>";
                }

                // Comissão - Paga / Não Paga
                Financeiro_ComissaoFoiPaga = "" + reader["Financeiro_ComissaoFoiPaga"];
                if (Financeiro_ComissaoFoiPaga == "1")
                {
                    Financeiro_ComissaoFoiPaga = "<span class=\"" + greenStyle + "\">Paga</span>";
                }
                else
                {
                    Financeiro_ComissaoFoiPaga = "<span class=\"" + redStyle + "\">Não Paga</span>";
                }

                // Comissão Extornada - Sim / Não
                ComissaoFoiExtornadaPeloVendedor = "" + reader["ComissaoFoiExtornadaPeloVendedor"];
                if (ComissaoFoiExtornadaPeloVendedor == "1")
                {
                    ComissaoFoiExtornadaPeloVendedor = "<span class=\"" + greenStyle + "\">Sim</span>";
                }
                else
                {
                    ComissaoFoiExtornadaPeloVendedor = "<span class=\"" + redStyle + "\">Não</span>";
                }

                
                this.Response.Write("<tr>");
                this.Response.Write("   <td><strong>Vendedor: </strong><br />" + reader["NomeVendedorSAC"] + " <br /><br /><strong>Cliente: </strong><br />" + reader["NomeClienteSAC"] + "</td>");

                this.Response.Write("   <td>");
                this.Response.Write("       <strong>Produto: </strong>" + reader["NomeProduto"]);
                this.Response.Write("       <br />");
                this.Response.Write("       <strong>TX: </strong>R$ " + txValue.ToString("#,##0.00"));
                this.Response.Write("       <br />");
                this.Response.Write("       <strong>Mensalidade: </strong>R$ " + mValue.ToString("#,##0.00") + "");
                this.Response.Write("       <br />");
                this.Response.Write("       <strong>Data: </strong>" + date + "");
                this.Response.Write("       <br />");
                this.Response.Write("       <strong>Nº: </strong>" + Lancamento_NumeroContrato + "");
                this.Response.Write("   </td>");

                this.Response.Write("   <td>");
                this.Response.Write("       <strong>Contrato: </strong>" + ContratoRecebido);
                this.Response.Write("       <br />");
                this.Response.Write("       <strong>Venda: </strong>" + ContratoFoiCancelado);
                this.Response.Write("       <br />");
                this.Response.Write("       <strong>Comissão: </strong>" + Financeiro_ComissaoFoiPaga);
                this.Response.Write("       <br />");
                this.Response.Write("       <strong>Comissão Extornada: </strong>" + ComissaoFoiExtornadaPeloVendedor);
                this.Response.Write("       <br />");
                this.Response.Write("   </td>");

                this.Response.Write("   <td><center>" + options + "</center></td>");
                this.Response.Write("</tr>");
            }
            reader.Close();
            dao.Connector.Close();
        }
        catch
        {
            this.Response.Write("<tr>");
            this.Response.Write("   <td>" + "Ocorreu um erro no servidor" + "</td>");
            this.Response.Write("   <td>" + "" + "</td>");
            this.Response.Write("   <td>" + "" + "</td>");
            this.Response.Write("   <td>" + "" + "</td>");
            this.Response.Write("   <td>" + "" + "</td>");
            this.Response.Write("   <td>" + "" + "</td>");
            this.Response.Write("</tr>");
        }
    }

    public string AdjustNumber(string n)
    {
        if (n.Length == 1)
        {
            return "0" + n;
        }
        return n;
    }
}